#include <iostream>
#include <map>  //map的头文件
using namespace std;
/*
	
*/

int main()
{
	//定义map对象
	map<string,string> map1;  //从左到右分别对应键的类型，值的类型

	//存放键值对--》键值对描述对应关系
	//写法1：使用insert函数--》一次存放一对/一副数据
	map1.insert(pair<string,string>("zhangsan","GZ2522班级"));
	map1.insert(pair<string,string>("lisi","GZ2523班级"));
	
	//写法2：map重载了[](不是用来获取下标i对应的元素)，可以用来插入键值对
	map1["wangwu"]="GZ2523班级";
	map1["zhaoliu"]="GZ2524班级";
	
	//通过键获取值
	//cout<<"wangwu在: "<<map1.at("wangwu")<<endl;
	//通过键修改对应的值
	//map1.at("wangwu")="GZ2528班级";
	
	//依据键--》统计对应的键值对个数
	//cout<<"zhangsan键值对有: "<<map1.count("zhangsan")<<"个"<<endl;
	
	//安放键值对
	//map1.emplace("zhaoqi","GZ2524班级");
	
	//删除键值对
	//map1.erase("lisi"); //依据键，去删除对应的键值对
	//map1.erase(map1.begin());
	
	//通过键寻找对应的键值对
	auto ret=map1.find("zhangsan");
	//判断是否找到zhangsan对应的键值对
	if(ret!=map1.end())
	{
		cout<<"找到zhangsan对应的键值对了  "<<ret->first<<":"<<ret->second<<endl;
	}
	else
	{
		cout<<"对不起，根本没有zhangsan这个人"<<endl;
	}
	
	//迭代器遍历map1
	auto it=map1.begin();
	for(; it!=map1.end(); it++)
	{
		cout<<"键: "<<it->first<<endl;
		cout<<"值: "<<it->second<<endl;
	}
	return 0;
}